1490G - Old Floppy Drive - CodeForces Solution


binary search data structures math *1900

Please click on ads to support us..

Python Code:

import sys

input = sys.stdin.readline
inf = float('inf')


def getInt():
    return int(input())


def getStr():
    return input().strip()


def getList(split=True):
    s = getStr()
    if split:
        s = s.split()
    return list(map(int, s))


t = getInt()


def solve():
    n, m = getList()
    a = getList()
    q = getList()
    from itertools import accumulate
    p = list(accumulate(a))
    gain = list(accumulate(p, max))
    from bisect import bisect_left, bisect
    for i in q:
        if i <= gain[-1]:
            it = bisect_left(gain, i)
            print(it, end=" ")
        elif p[-1] <= 0:
            print(-1, end=" ")
        else:
                        k = (i-gain[-1] + p[-1]-1) // (p[-1])
            i -= p[-1]*k
            res = n * k
            if i:
                res += bisect_left(gain, i)+1
            print(res-1, end=" ")
    print()


for _ in range(t):
    solve()


Comments

Submit
0 Comments
More Questions

227B - Effective Approach
1534B - Histogram Ugliness
1611B - Team Composition Programmers and Mathematicians
110A - Nearly Lucky Number
1220B - Multiplication Table
1644A - Doors and Keys
1644B - Anti-Fibonacci Permutation
1610A - Anti Light's Cell Guessing
349B - Color the Fence
144A - Arrival of the General
1106A - Lunar New Year and Cross Counting
58A - Chat room
230A - Dragons
200B - Drinks
13A - Numbers
129A - Cookies
1367B - Even Array
136A - Presents
1450A - Avoid Trygub
327A - Flipping Game
411A - Password Check
1520C - Not Adjacent Matrix
1538B - Friends and Candies
580A - Kefa and First Steps
1038B - Non-Coprime Partition
43A - Football
50A - Domino piling
479A - Expression
1480A - Yet Another String Game
1216C - White Sheet